import axios from 'axios';
import { useAuthStore } from '../stores/auth.js'; // 导入 auth 模块的 store
import { ElMessage } from 'element-plus'; // 引入 Element Plus 的消息组件（如果还没引，就加上）

// 定义基础 URL，VITE_BASE_URL 是在 .env 文件中定义的环境变量
const base_url = import.meta.env.VITE_BASE_URL;

// 创建 axios 实例
const apiClient = axios.create({
  baseURL: base_url,
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json',
  },
});

// 添加请求拦截器
apiClient.interceptors.request.use(
  (config) => {
    const authStore = useAuthStore(); // 获取 auth 模块的 store
    const token = authStore.token; // 获取 token
    // 判断是否是登录请求
    if (!config.url.includes('login')) {
      if (token) {
        config.headers['Authorization'] = `Bearer ${token}`;
      }
    }
    return config;
  },
  (error) => {
    // 请求错误处理
    return Promise.reject(error);
  }
);

// 添加响应拦截器
apiClient.interceptors.response.use(
  (response) => {
    // 响应成功，直接返回
    return response;
  },
  (error) => {
    // 响应错误统一处理
    if (error.response) {
      const status = error.response.status;
      const message = error.response.data?.detail || '请求出错';

      if (status === 401) {
        alert('登录失效，请重新登录');
        const authStore = useAuthStore();
        authStore.clearToken(); // 清除本地token（根据你的auth store实现）
        window.location.href = '/login'; // 跳转到登录页
      } else {
        ElMessage.error(message);
      }
    } else {
      ElMessage.error('服务器无响应');
    }

    return Promise.reject(error);
  }
);

// 导出 apiClient
export default apiClient;
